As the popularity of the Internet has grown so has the number of networks utilizing the Transmission Control Protocol/Internet Protocol (TCP/IP) for inter-processor communications. In fact, the popularity of TCP/IP has led to many internal networks (or intra-nets) being based upon this industry standard. TCP/IP utilizes an IP address as a means to route messages between networked computers and networks of networked computers.
In a typical network utilizing TCP/IP each workstation or computer uses a network interface to communicate with other workstations in the network and with other networks. When a TCP/IP application, such as a web browser or network management software using the Simple Network Management Protocol (SNMP), is initialized in a PC platform computer it utilizes a software component known as a TCP/IP stack as part of the connection between the application and the network interface. In other platforms other components allow for connection to TCP/IP networks. For example, software called MacTCP allows a Macintosh to utilize TCP/IP and TCP/IP is built into most UNIX systems. In any case, one function of this TCP/IP software is to associate an IP address with an application. In a TCP/IP stack this association is typically made during a bind operation where the address of the network interface is bound to the application. Thus, for example, multiple instances of a web browser would all be bound to the same IP address in a computer with a single network interface card.
Some implementations of TCP/IP also include a feature known as address aliasing. In address aliasing two or more IP addresses are associated with a single network interface. However, no provision is made in most applications for binding to specific IP addresses. Thus, there is no mechanism for changing the IP address to which the application is bound. To provide multiple instances of the same application bound to different IP addresses each application would need to be rewritten to utilize a specific IP address rather than the generic INET.sub.-- ADDR.sub.-- ANY parameter which specifies all of the IP addresses associated with a network interface.
One example of the difficulties presented by the one-to-one correspondence of IP addresses to network interfaces arises in network testing. In order to test a network for stress, capacity or performance or for regression testing of IP network software on a large network it has typically been necessary to use a large amount of hardware to replicate the network as each network interface could only support one IP address. Thus if five-hundred IP application instances were to be tested five-hundred network interfaces would be needed. This test solution often presented logistical problems in replicating a large network and control and traffic problems if an existing production network is used for testing. While network "simulation" software, such as for example, NetworkTools Virtual Agent.TM., has been available, this software typically did not allow for the use of off-the-shelf application software without modification to the application software.
In view of the above discussion, there exists a need for improvement in the association of IP addresses to network interface hardware. A further need exists in the ability to test networks without physically replicating the network under test.